package br.unirn.exemplos.dominio;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Transient;

import org.hibernate.annotations.GenericGenerator;

@Entity
public class Usuario implements Serializable{

	@Id
	@GenericGenerator(name="public.usuario_sequence",strategy="sequence")
	@GeneratedValue(generator="public.usuario_sequence")
	@Column(name="id_usuario")
	private int id;
	
	private String login;
	
	private String senha;
	
	private String nome;
	
	private String descricaoPessoal;
	/**
	 * Data de cadastro
	 */
	@Column(name="data_cadastro")
	private Date dataCadastro;
	/**
	 * Us�rios que me seguem
	 */
	@OneToMany(mappedBy="usuarioSeguido")
	private List<Seguidor> seguidores;
	
	/**
	 * Usu�rios que eu sigo
	 */
	@OneToMany(mappedBy="usuarioSeguidor")
	private List<Seguidor> seguidos;
	/**
	 * Meus Posts
	 */
	@OneToMany(mappedBy="usuario")
	private List<Post> posts;

	/** Utilizado na view de busca para seguir ou n�o*/
	@Transient
	private boolean seguindo = false;
	

	
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public Date getDataCadastro() {
		return dataCadastro;
	}

	public void setDataCadastro(Date dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	public String getSenha() {
		return senha;
	}

	public void setSenha(String senha) {
		this.senha = senha;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricaoPessoal() {
		return descricaoPessoal;
	}

	public void setDescricaoPessoal(String descricaoPessoal) {
		this.descricaoPessoal = descricaoPessoal;
	}

	public List<Seguidor> getSeguidores() {
		return seguidores;
	}

	public void setSeguidores(List<Seguidor> seguidores) {
		this.seguidores = seguidores;
	}

	public List<Seguidor> getSeguidos() {
		return seguidos;
	}

	public void setSeguidos(List<Seguidor> seguidos) {
		this.seguidos = seguidos;
	}

	public List<Post> getPosts() {
		return posts;
	}

	public void setPosts(List<Post> posts) {
		this.posts = posts;
	}

	public boolean isSeguindo() {
		return seguindo;
	}

	public void setSeguindo(boolean seguindo) {
		this.seguindo = seguindo;
	}

	
}
